import {userCartAdd,userCartGet,userCartUpdate} from '../api/user'
export default {
  namespaced:true,
  state(){
    return {
      cartList:[
        // {
        //   name:'商品名称',
        //   image_url: "https://pimg.wzj.com/wzj/product/spu/366dbcef-9e8d-46fc-b15c-531c443e7cbe.jpg?x-oss-process=style/w800",
        //   prices:[
        //     {price:1999}
        //   ],
        //   count:1,
        //   ischeck:true
        // },
        // {
        //   name:'商品名称',
        //   image_url: "https://pimg.wzj.com/wzj/product/spu/366dbcef-9e8d-46fc-b15c-531c443e7cbe.jpg?x-oss-process=style/w800",
        //   prices:[
        //     {price:1999}
        //   ],
        //   count:2,
        //   ischeck:false
        // }
      ]
    }
  },
  getters:{
    allInfo(state){ //根据cartList动态换算：全选状态
      let {cartList} = state
      let allCheck = true //假设是已经全选
      let checkNum = 0  //勾选商品数
      let checkPrice = 0  //应付总额
      cartList.forEach(item=>{
        if(!item.ischeck){
          allCheck = false
        }
        if(item.ischeck){
          checkNum += item.count
          checkPrice += item.count * item.prices[0].price
        }
      })
      return {
        allCheck,
        checkNum,
        checkPrice
      }
    }
  },
  mutations:{
    cartInitMut(state,cartList){ //初始化购物车
      state.cartList = cartList
    },
    cartAddMut(state,cartObj){
      state.cartList.push(cartObj)
    },
    cartCheckMut(state,idx){ //单选
      state.cartList[idx].ischeck = !state.cartList[idx].ischeck
    },
    cartAllCheckMut(state,bool){  //全选，此处的bool是原来的全选状态
      console.log(bool);
      let {cartList} = state
      state.cartList.forEach(item=>{
        item.ischeck = !bool
      })
    },
    cartDelMut(state){ //删除
      state.cartList = state.cartList.filter(item=>{
        return !item.ischeck
      })
    }
  },
  actions:{  //可以发异步请求的actions
    cartAddAct(context,cartObj){  //像数据库加入购物车
      //判断购物车是否存在同类商品
      let {cartList} = context.state
      let len = cartList.length
      for(let i=0;i<len;i++){
        if(cartList[i].goodid==cartObj.goodid){  //存在同类商品
          cartList[i].count++
          // userCartUpdate(cartList[i].id,cartList[i]).then(res=>{ //更新数据库
          //   console.log(res);
          // })
          return  //此处的return很重要，中断for，阻断后续新增逻辑
        }
      }
      // 使用post方法请求 /cart 接口
      userCartAdd(cartObj).then(res=>{
        console.log('本地的新商品',cartObj);
        console.log('后端新增成功后的返回值',res);
        // 数据线上存储成功后，再触发cartAddMut，改变state
        context.commit('cartAddMut',cartObj)
      })
    },
    cartInitAct(context,userid){  //从后端加载用户数据并显示
      userCartGet(userid).then(res=>{
        // console.log(res);
        context.commit('cartInitMut',res.data.data)
      })
    }
  }
}